package cn.tedu.oopextends;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-09 周三 11:25
 */
/*本类用于测试继承中成员方法的使用*/
public class TestExtends2 {
    public static void main(String[] args) {
        Father2 f=new Father2();
        Son2 s=new Son2();
        f.eat();
        s.study();
        s.eat();
    }
}
//1.创建父类
class Father2{
    //3.
    public Father2(){

    }
    public void eat(){
        System.out.println("爸爸爱吃肉~");
    }

}
//2.创建子类，并与父类建立继承关系
class Son2 extends Father2{

    public Son2() {

    }
    //5.创建子类特有的功能
    public void study(){
        System.out.println("快到端午了，学学包粽子吧~");
    }
    /**OCP原则：面向修改关闭，面向拓展开放
     * --只允许功能拓展，不允许修改原来的代码
     *
     * */
    //6.修改父类原有的功能--不允许修改父类中的原代码
    //功能修改--方法的重写
    /**重写的规则：
     * 和父类的方法签名保持一致   方法签名：就是 【方法名&参数列表】
     * 然后去修改子类中本方法的实现，父类的功能并没有被改变
     * 子类方法的修饰符 权限   要>=  父类方法的修饰符
     * 返回值类型 要 <= 父类的返回值类型
     * 重写时，子类必须拥有可以重写的权限，子类无权修改父类的私有方法
     * */
    @Override/**这是一个注解，可以理解成一个标签，用来标记此方法是不是一个重写的方法
     只有写对了才能加这个注解，不然会报错
     */
    public void eat(){
        System.out.println("子类的eat");
    }
    public int eat(int i){
        System.out.println("子类i = " + i);
        return i;
    }
}